--
-- PostgreSQL database dump
--

SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;

--
-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: -
--

COMMENT ON SCHEMA public IS 'Standard public schema';


--
-- Name: traza; Type: SCHEMA; Schema: -; Owner: -
--

CREATE SCHEMA traza;


--
-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: -
--

CREATE PROCEDURAL LANGUAGE plpgsql;


SET search_path = traza, pg_catalog;

--
-- Name: check_porcentaje_aplicacion_producto(); Type: FUNCTION; Schema: traza; Owner: -
--

CREATE FUNCTION check_porcentaje_aplicacion_producto() RETURNS "trigger"
    AS $$
DECLARE
	r RECORD;
	cantidad_recepcion float;
	cantidad_total float;
BEGIN	
	select into r cantidad_producto from traza.recepcion_insumo
	where codigo_recepcion_insumo = new.codigo_recepcion_insumo;
	
	cantidad_recepcion = r.cantidad_producto;
	
	select into r sum(cantidad) as total from traza.aplicacion_producto
	where codigo_recepcion_insumo = new.codigo_recepcion_insumo;
	
	cantidad_total := r.total + new.cantidad;

	if cantidad_total > cantidad_recepcion  then
		raise exception 'La cantidad a agregar sobrepasa la cantidad recibida.';
	end if;
	return new;

END;$$
    LANGUAGE plpgsql;


--
-- Name: check_porcentaje_detalle_fermentacion(); Type: FUNCTION; Schema: traza; Owner: -
--

CREATE FUNCTION check_porcentaje_detalle_fermentacion() RETURNS "trigger"
    AS $$
DECLARE
	r RECORD;
BEGIN	
	select into r sum(porcentaje) as total from traza.detalle_fermentacion
	where codigo_relacion = new.codigo_relacion;
	if (r.total + new.porcentaje) > 100 then
		raise exception 'El porcentaje acumulado es mayor que el cien por ciento';
	end if;
	return new;

END;$$
    LANGUAGE plpgsql;


--
-- Name: check_porcentaje_detalle_mezcla(); Type: FUNCTION; Schema: traza; Owner: -
--

CREATE FUNCTION check_porcentaje_detalle_mezcla() RETURNS "trigger"
    AS $$
DECLARE
	r RECORD;
BEGIN	
	select into r sum(porcentaje) as total from traza.detalle_mezcla
	where codigo_relacion = new.codigo_relacion;
	if (r.total + new.porcentaje) > 100 then
		raise exception 'El porcentaje acumulado es mayor que el cien por ciento';
	end if;
	return new;

END;$$
    LANGUAGE plpgsql;


--
-- Name: check_porcentaje_fermentacion_mezcla(); Type: FUNCTION; Schema: traza; Owner: -
--

CREATE FUNCTION check_porcentaje_fermentacion_mezcla() RETURNS "trigger"
    AS $$
DECLARE
	r RECORD;
BEGIN	
	select into r sum(porcentaje) as total from traza.fermentacion_mezcla
	where codigo_fermentacion = new.codigo_fermentacion;
	if (r.total + new.porcentaje) > 100 then
		raise exception 'El porcentaje acumulado es mayor que el cien por ciento';
	end if;
	return new;

END;$$
    LANGUAGE plpgsql;


--
-- Name: check_porcentaje_maceracion_fermentacion(); Type: FUNCTION; Schema: traza; Owner: -
--

CREATE FUNCTION check_porcentaje_maceracion_fermentacion() RETURNS "trigger"
    AS $$
DECLARE
	r RECORD;
BEGIN	
	select into r sum(porcentaje) as total from traza.maceracion_fermentacion
	where codigo_maceracion = new.codigo_maceracion;
	if (r.total + new.porcentaje) > 100 then
		raise exception 'El porcentaje acumulado es mayor que el cien por ciento';
	end if;
	return new;

END;$$
    LANGUAGE plpgsql;


--
-- Name: check_porcentaje_mezcla_embotellado(); Type: FUNCTION; Schema: traza; Owner: -
--

CREATE FUNCTION check_porcentaje_mezcla_embotellado() RETURNS "trigger"
    AS $$
DECLARE
	r RECORD;
BEGIN	
	select into r sum(porcentaje) as total from traza.mezcla_embotellado
	where codigo_mezcla = new.codigo_mezcla;
	if (r.total + new.porcentaje) > 100 then
		raise exception 'El porcentaje acumulado es mayor que el cien por ciento';
	end if;
	return new;

END;$$
    LANGUAGE plpgsql;


--
-- Name: check_porcentaje_recepcion_uva(); Type: FUNCTION; Schema: traza; Owner: -
--

CREATE FUNCTION check_porcentaje_recepcion_uva() RETURNS "trigger"
    AS $$
DECLARE
	r RECORD;
BEGIN	
	select into r sum(porcentaje) as total from traza.recepcion_maceracion 
	where codigo_recepcion_uva = new.codigo_recepcion_uva;
	if (r.total + new.porcentaje) > 100 then
		raise exception 'El porcentaje acumulado es mayor que el cien por ciento';
	end if;
	return new;

END;$$
    LANGUAGE plpgsql;


--
-- Name: aplicacion_producto_codigo_aplicacion_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE aplicacion_producto_codigo_aplicacion_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: aplicacion_producto; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE aplicacion_producto (
    cantidad double precision NOT NULL,
    codigo_aplicacion integer DEFAULT nextval('aplicacion_producto_codigo_aplicacion_seq'::regclass) NOT NULL,
    codigo_fermentacion integer,
    codigo_maceracion integer,
    codigo_recepcion_insumo integer NOT NULL,
    codigo_recepcion_uva integer,
    codigo_tipo_aplicacion integer,
    fecha_aplicacion date NOT NULL,
    hora_aplicacion time without time zone NOT NULL,
    rut_responsable character varying(12) NOT NULL,
    codigo_mezcla integer,
    codigo_embotellado integer,
    dosis text,
    codigo_despacho integer,
    merma double precision DEFAULT 0 NOT NULL
);


--
-- Name: control_codigo_control_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE control_codigo_control_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: control; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE control (
    codigo_control integer DEFAULT nextval('control_codigo_control_seq'::regclass) NOT NULL,
    codigo_fermentacion integer,
    codigo_maceracion integer,
    codigo_recepcion_uva integer,
    codigo_tipo_control integer NOT NULL,
    fecha_control date NOT NULL,
    hora_control time without time zone NOT NULL,
    resultado_control double precision,
    rut_responsable character varying(12) NOT NULL,
    descripcion_resultado text,
    codigo_mezcla integer,
    codigo_embotellado integer,
    codigo_despacho integer
);


--
-- Name: cuartel_codigo_cuartel_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE cuartel_codigo_cuartel_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: cuartel; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE cuartel (
    codigo_cuartel integer DEFAULT nextval('cuartel_codigo_cuartel_seq'::regclass) NOT NULL,
    codigo_sector integer NOT NULL,
    descripcion_cuartel text NOT NULL,
    codigo_variedad integer
);


--
-- Name: despacho_codigo_despacho_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE despacho_codigo_despacho_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: despacho; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE despacho (
    codigo_despacho integer DEFAULT nextval('despacho_codigo_despacho_seq'::regclass) NOT NULL,
    codigo_tipo_documento integer NOT NULL,
    numero_documento integer NOT NULL,
    rut_cliente character varying(12) NOT NULL,
    rut_transportista character varying(12) NOT NULL,
    observaciones text NOT NULL,
    fecha_despacho date NOT NULL,
    destino text NOT NULL,
    sello_seguridad text NOT NULL,
    hora_despacho time without time zone NOT NULL,
    codigo_temporada integer DEFAULT 1 NOT NULL
);


--
-- Name: detalle_fermentacion; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE detalle_fermentacion (
    codigo_fermentacion integer NOT NULL,
    codigo_relacion integer NOT NULL,
    porcentaje double precision DEFAULT 0.0 NOT NULL
);


--
-- Name: detalle_mezcla; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE detalle_mezcla (
    codigo_mezcla integer NOT NULL,
    codigo_relacion integer NOT NULL,
    porcentaje double precision NOT NULL
);


--
-- Name: embotellado_codigo_embotellado_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE embotellado_codigo_embotellado_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: embotellado; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE embotellado (
    cantidad double precision NOT NULL,
    codigo_embotellado integer DEFAULT nextval('embotellado_codigo_embotellado_seq'::regclass) NOT NULL,
    codigo_producto integer NOT NULL,
    fecha date NOT NULL,
    hora time not null,
    lote text NOT NULL,
    orden_trabajo text,
    cantidad_botella double precision,
    codigo_temporada integer DEFAULT 1 NOT NULL
);


--
-- Name: embotellado_despacho; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE embotellado_despacho (
    cantidad double precision NOT NULL,
    codigo_despacho integer NOT NULL,
    codigo_embotellado integer NOT NULL
);


--
-- Name: estanque_codigo_estanque_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE estanque_codigo_estanque_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: estanque; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE estanque (
    capacidad_estanque double precision NOT NULL,
    codigo_estanque integer DEFAULT nextval('estanque_codigo_estanque_seq'::regclass) NOT NULL,
    descripcion_estanque text NOT NULL
);


--
-- Name: fermentacion_codigo_fermentacion_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE fermentacion_codigo_fermentacion_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: fermentacion; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE fermentacion (
    codigo_estanque integer NOT NULL,
    codigo_fermentacion integer DEFAULT nextval('fermentacion_codigo_fermentacion_seq'::regclass) NOT NULL,
    fecha_fermentacion date NOT NULL,
    hora_fermentacion time without time zone NOT NULL,
    volumen double precision NOT NULL,
    orden_trabajo text,
    origen character(1) DEFAULT 'S'::bpchar NOT NULL,
    codigo_temporada integer DEFAULT 1 NOT NULL
);


--
-- Name: fermentacion_mezcla; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE fermentacion_mezcla (
    codigo_fermentacion integer NOT NULL,
    codigo_mezcla integer NOT NULL,
    porcentaje double precision NOT NULL,
    rendimiento double precision DEFAULT 100 NOT NULL
);


--
-- Name: ficha; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE ficha (
    codigo_tipo_ficha integer NOT NULL,
    descripcion_ficha text NOT NULL,
    rut_ficha character varying(12) NOT NULL
);


--
-- Name: insumo_codigo_insumo_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE insumo_codigo_insumo_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: insumo; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE insumo (
    codigo_insumo integer DEFAULT nextval('insumo_codigo_insumo_seq'::regclass) NOT NULL,
    descripcion_insumo text NOT NULL
);


--
-- Name: maceracion_codigo_maceracion_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE maceracion_codigo_maceracion_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: maceracion; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE maceracion (
    codigo_estanque integer NOT NULL,
    codigo_maceracion integer DEFAULT nextval('maceracion_codigo_maceracion_seq'::regclass) NOT NULL,
    fecha_maceracion date NOT NULL,
    hora_maceracion time without time zone NOT NULL,
    volumen_maceracion double precision NOT NULL,
    orden_trabajo text,
    origen character(1) DEFAULT 'S'::bpchar NOT NULL,
    codigo_temporada integer DEFAULT 1 NOT NULL
);


--
-- Name: maceracion_fermentacion; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE maceracion_fermentacion (
    codigo_fermentacion integer NOT NULL,
    codigo_maceracion integer NOT NULL,
    porcentaje double precision DEFAULT 0.0 NOT NULL
);


--
-- Name: mezcla_codigo_mezcla_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE mezcla_codigo_mezcla_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: mezcla; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE mezcla (
    codigo_estanque integer NOT NULL,
    codigo_mezcla integer DEFAULT nextval('mezcla_codigo_mezcla_seq'::regclass) NOT NULL,
    fecha_mezcla date DEFAULT ('now'::text)::date NOT NULL,
    hora_mezcla time without time zone DEFAULT ('now'::text)::time with time zone NOT NULL,
    volumen double precision NOT NULL,
    codigo_proceso text,
    orden_trabajo text,
    origen character(1) DEFAULT 'S'::bpchar NOT NULL,
    codigo_temporada integer DEFAULT 1 NOT NULL
);


--
-- Name: mezcla_despacho; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE mezcla_despacho (
    cantidad double precision NOT NULL,
    codigo_despacho integer NOT NULL,
    codigo_mezcla integer NOT NULL
);


--
-- Name: mezcla_embotellado; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE mezcla_embotellado (
    codigo_embotellado integer NOT NULL,
    codigo_mezcla integer NOT NULL,
    porcentaje double precision NOT NULL
);


--
-- Name: producto_codigo_producto_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE producto_codigo_producto_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: producto; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE producto (
    codigo_producto integer DEFAULT nextval('producto_codigo_producto_seq'::regclass) NOT NULL,
    descripcion_producto text NOT NULL
);


--
-- Name: recepcion_insumo_codigo_recepcion_insumo_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE recepcion_insumo_codigo_recepcion_insumo_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: recepcion_insumo; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE recepcion_insumo (
    cantidad_producto double precision NOT NULL,
    codigo_insumo integer NOT NULL,
    codigo_recepcion_insumo integer DEFAULT nextval('recepcion_insumo_codigo_recepcion_insumo_seq'::regclass) NOT NULL,
    codigo_tipo_documento integer NOT NULL,
    fecha_recepcion_insumo date NOT NULL,
    fecha_vencimiento date,
    hora_recepcion_insumo time without time zone NOT NULL,
    lote_producto text,
    numero_documento integer NOT NULL,
    rut_proveedor character varying(12) NOT NULL,
    codigo_unidad integer NOT NULL,
    codigo_temporada integer DEFAULT 1 NOT NULL
);


--
-- Name: recepcion_maceracion; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE recepcion_maceracion (
    codigo_maceracion integer NOT NULL,
    codigo_recepcion_uva integer NOT NULL,
    porcentaje double precision DEFAULT 0.0 NOT NULL
);


--
-- Name: recepcion_uva_codigo_recepcion_uva_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE recepcion_uva_codigo_recepcion_uva_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: recepcion_uva; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE recepcion_uva (
    cantidad_recepcion_uva double precision NOT NULL,
    codigo_cuartel integer NOT NULL,
    codigo_recepcion_uva integer DEFAULT nextval('recepcion_uva_codigo_recepcion_uva_seq'::regclass) NOT NULL,
    fecha_recepcion_uva date NOT NULL,
    hora_recepcion_uva time without time zone NOT NULL,
    codigo_temporada integer DEFAULT 1 NOT NULL
);


--
-- Name: sector_codigo_sector_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE sector_codigo_sector_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: sector; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE sector (
    codigo_sector integer DEFAULT nextval('sector_codigo_sector_seq'::regclass) NOT NULL,
    descripcion_sector text NOT NULL,
    rut_propietario character varying(12) NOT NULL
);


--
-- Name: temporada_codigo_temporada_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE temporada_codigo_temporada_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: temporada; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE temporada (
    codigo_temporada integer DEFAULT nextval('temporada_codigo_temporada_seq'::regclass) NOT NULL,
    fecha_inicio date NOT NULL,
    fecha_termino date NOT NULL,
    abierta boolean NOT NULL
);


--
-- Name: tipo_aplicacion_codigo_tipo_aplicacion_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE tipo_aplicacion_codigo_tipo_aplicacion_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: tipo_aplicacion; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE tipo_aplicacion (
    codigo_tipo_aplicacion integer DEFAULT nextval('tipo_aplicacion_codigo_tipo_aplicacion_seq'::regclass) NOT NULL,
    descripcion_tipo_aplicacion text NOT NULL
);


--
-- Name: tipo_control_codigo_tipo_control_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE tipo_control_codigo_tipo_control_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: tipo_control; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE tipo_control (
    codigo_tipo_control integer DEFAULT nextval('tipo_control_codigo_tipo_control_seq'::regclass) NOT NULL,
    descripcion_tipo_control text NOT NULL,
    tipo_resultado character(1) DEFAULT 'N'::bpchar NOT NULL,
    codigo_unidad integer DEFAULT 1 NOT NULL
);


--
-- Name: tipo_documento_codigo_tipo_documento_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE tipo_documento_codigo_tipo_documento_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: tipo_documento; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE tipo_documento (
    codigo_tipo_documento integer DEFAULT nextval('tipo_documento_codigo_tipo_documento_seq'::regclass) NOT NULL,
    descripcion_tipo_documento text NOT NULL
);


--
-- Name: tipo_ficha_codigo_tipo_ficha_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE tipo_ficha_codigo_tipo_ficha_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: tipo_ficha; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE tipo_ficha (
    codigo_tipo_ficha integer DEFAULT nextval('tipo_ficha_codigo_tipo_ficha_seq'::regclass) NOT NULL,
    descripcion_tipo_ficha text NOT NULL
);


--
-- Name: unidad_codigo_unidad_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE unidad_codigo_unidad_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: unidad; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE unidad (
    codigo_unidad integer DEFAULT nextval('unidad_codigo_unidad_seq'::regclass) NOT NULL,
    descripcion_unidad text NOT NULL
);


--
-- Name: variedad_codigo_variedad_seq; Type: SEQUENCE; Schema: traza; Owner: -
--

CREATE SEQUENCE variedad_codigo_variedad_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;


--
-- Name: variedad; Type: TABLE; Schema: traza; Owner: -; Tablespace: 
--

CREATE TABLE variedad (
    codigo_variedad integer DEFAULT nextval('variedad_codigo_variedad_seq'::regclass) NOT NULL,
    descripcion_variedad text NOT NULL
);


--
-- Name: vw_movimiento_estanque; Type: VIEW; Schema: traza; Owner: -
--

CREATE VIEW vw_movimiento_estanque AS
    (((SELECT d.codigo_maceracion AS cod_a, d.codigo_fermentacion AS cod_b, d.porcentaje, (a.volumen_maceracion * (d.porcentaje / (100)::double precision)) AS volumen, 1 AS tipo, 'Maceracion a Fermentacion' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((maceracion_fermentacion d JOIN maceracion a ON ((d.codigo_maceracion = a.codigo_maceracion))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN fermentacion b ON ((d.codigo_fermentacion = b.codigo_fermentacion))) JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada))) UNION SELECT d.codigo_fermentacion AS cod_a, d.codigo_mezcla AS cod_b, d.porcentaje, (a.volumen * (d.porcentaje / (100)::double precision)) AS volumen, 2 AS tipo, 'Fermentacion a Mezcla' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((fermentacion_mezcla d JOIN fermentacion a ON ((d.codigo_fermentacion = a.codigo_fermentacion))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN mezcla b ON ((d.codigo_mezcla = b.codigo_mezcla))) JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada)))) UNION SELECT d.codigo_fermentacion AS cod_a, d.codigo_relacion AS cod_b, d.porcentaje, (a.volumen * (d.porcentaje / (100)::double precision)) AS volumen, 3 AS tipo, 'Fermentacion a Fermentacion' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((detalle_fermentacion d JOIN fermentacion a ON ((d.codigo_fermentacion = a.codigo_fermentacion))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN fermentacion b ON ((d.codigo_relacion = b.codigo_fermentacion))) JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada)))) UNION SELECT d.codigo_mezcla AS cod_a, d.codigo_embotellado AS cod_b, d.porcentaje, (a.volumen * (d.porcentaje / (100)::double precision)) AS volumen, 4 AS tipo, 'Mezcla a embotellado' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, 0 AS code_b, 'SIN ESTANQUE' AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM ((((mezcla_embotellado d JOIN mezcla a ON ((d.codigo_mezcla = a.codigo_mezcla))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN embotellado b ON ((d.codigo_embotellado = b.codigo_embotellado))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada)))) UNION SELECT d.codigo_mezcla AS cod_a, d.codigo_relacion AS cod_b, d.porcentaje, (a.volumen * (d.porcentaje / (100)::double precision)) AS volumen, 5 AS tipo, 'Mezcla a Mezcla' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((detalle_mezcla d JOIN mezcla a ON ((d.codigo_mezcla = a.codigo_mezcla))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN mezcla b ON ((d.codigo_relacion = b.codigo_mezcla))) JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada)));


--
-- Name: vw_movimiento_estanque_fecha; Type: VIEW; Schema: traza; Owner: -
--

CREATE VIEW vw_movimiento_estanque_fecha AS
    ((((((((SELECT d.codigo_maceracion AS cod_a, d.codigo_fermentacion AS cod_b, a.fecha_maceracion AS fecha, d.porcentaje, (a.volumen_maceracion * (d.porcentaje / (100)::double precision)) AS volumen, 1 AS tipo, 'Maceracion a Fermentacion' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((maceracion_fermentacion d JOIN maceracion a ON ((d.codigo_maceracion = a.codigo_maceracion))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN fermentacion b ON ((d.codigo_fermentacion = b.codigo_fermentacion))) JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada))) UNION SELECT d.codigo_fermentacion AS cod_a, d.codigo_mezcla AS cod_b, a.fecha_fermentacion AS fecha, d.porcentaje, ((a.volumen * (d.porcentaje / (100)::double precision)) * (d.rendimiento / (100)::double precision)) AS volumen, 2 AS tipo, 'Fermentacion a Mezcla' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((fermentacion_mezcla d JOIN fermentacion a ON ((d.codigo_fermentacion = a.codigo_fermentacion))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN mezcla b ON ((d.codigo_mezcla = b.codigo_mezcla))) JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada)))) UNION SELECT d.codigo_fermentacion AS cod_a, d.codigo_relacion AS cod_b, a.fecha_fermentacion AS fecha, d.porcentaje, (a.volumen * (d.porcentaje / (100)::double precision)) AS volumen, 3 AS tipo, 'Fermentacion a Fermentacion' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((detalle_fermentacion d JOIN fermentacion a ON ((d.codigo_fermentacion = a.codigo_fermentacion))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN fermentacion b ON ((d.codigo_relacion = b.codigo_fermentacion))) JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada)))) UNION SELECT d.codigo_mezcla AS cod_a, d.codigo_embotellado AS cod_b, a.fecha_mezcla AS fecha, d.porcentaje, (a.volumen * (d.porcentaje / (100)::double precision)) AS volumen, 4 AS tipo, 'Mezcla a embotellado' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, 0 AS code_b, 'SIN ESTANQUE' AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM ((((mezcla_embotellado d JOIN mezcla a ON ((d.codigo_mezcla = a.codigo_mezcla))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN embotellado b ON ((d.codigo_embotellado = b.codigo_embotellado))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada)))) UNION SELECT d.codigo_relacion AS cod_a, d.codigo_mezcla AS cod_b, a.fecha_mezcla AS fecha, d.porcentaje, (b.volumen * (d.porcentaje / (100)::double precision)) AS volumen, 5 AS tipo, 'Mezcla a Mezcla' AS movimiento, b.codigo_estanque AS code_a, eb.descripcion_estanque AS desce_a, a.codigo_estanque AS code_b, ea.descripcion_estanque AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((detalle_mezcla d JOIN mezcla a ON ((d.codigo_mezcla = a.codigo_mezcla))) JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN mezcla b ON ((d.codigo_relacion = b.codigo_mezcla))) JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada)))) UNION SELECT 0 AS cod_a, b.codigo_mezcla AS cod_b, b.fecha_mezcla AS fecha, 100.0 AS porcentaje, b.volumen, 6 AS tipo, 'Mezcla sin origen especificado' AS movimiento, 0 AS code_a, '' AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, b.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM ((mezcla b JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((b.codigo_temporada = te.codigo_temporada))) WHERE (b.origen = 'S'::bpchar)) UNION SELECT 0 AS cod_a, b.codigo_fermentacion AS cod_b, b.fecha_fermentacion AS fecha, 100.0 AS porcentaje, b.volumen, 7 AS tipo, 'Fermentacion sin origen especificado' AS movimiento, 0 AS code_a, '' AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, b.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM ((fermentacion b JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((b.codigo_temporada = te.codigo_temporada))) WHERE (b.origen = 'S'::bpchar)) UNION SELECT 0 AS cod_a, b.codigo_maceracion AS cod_b, b.fecha_maceracion AS fecha, 100.0 AS porcentaje, b.volumen_maceracion AS volumen, 8 AS tipo, 'Maceracion sin origen especificado' AS movimiento, 0 AS code_a, '' AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, b.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM ((maceracion b JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((b.codigo_temporada = te.codigo_temporada))) WHERE (b.origen = 'S'::bpchar)) UNION SELECT a.codigo_mezcla AS cod_a, b.codigo_despacho AS cod_b, b.fecha_despacho AS fecha, ((md.cantidad / a.volumen) * (100)::double precision) AS porcentaje, md.cantidad AS volumen, 9 AS tipo, 'Despacho de mezcla a granel' AS movimiento, a.codigo_estanque AS code_a, ea.descripcion_estanque AS desce_a, 0 AS code_b, '' AS desce_b, a.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM ((((mezcla a JOIN estanque ea ON ((a.codigo_estanque = ea.codigo_estanque))) JOIN mezcla_despacho md ON ((a.codigo_mezcla = md.codigo_mezcla))) JOIN despacho b ON ((md.codigo_despacho = b.codigo_despacho))) JOIN temporada te ON ((a.codigo_temporada = te.codigo_temporada)))) UNION SELECT d.codigo_recepcion_uva AS cod_a, d.codigo_maceracion AS cod_b, b.fecha_maceracion AS fecha, d.porcentaje, (a.cantidad_recepcion_uva * (d.porcentaje / (100)::double precision)) AS volumen, 10 AS tipo, 'Recepcion Uva a Maceracion' AS movimiento, a.codigo_cuartel AS code_a, c.descripcion_cuartel AS desce_a, b.codigo_estanque AS code_b, eb.descripcion_estanque AS desce_b, b.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((recepcion_maceracion d JOIN recepcion_uva a ON ((d.codigo_recepcion_uva = a.codigo_recepcion_uva))) JOIN maceracion b ON ((d.codigo_maceracion = b.codigo_maceracion))) JOIN cuartel c ON ((a.codigo_cuartel = c.codigo_cuartel))) JOIN estanque eb ON ((b.codigo_estanque = eb.codigo_estanque))) JOIN temporada te ON ((b.codigo_temporada = te.codigo_temporada)));


--
-- Name: vw_stock_insumo; Type: VIEW; Schema: traza; Owner: -
--

CREATE VIEW vw_stock_insumo AS
    (SELECT r.codigo_recepcion_insumo, i.descripcion_insumo, r.cantidad_producto, u.descripcion_unidad, f.descripcion_ficha, r.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM ((((recepcion_insumo r JOIN insumo i ON ((i.codigo_insumo = r.codigo_insumo))) JOIN unidad u ON ((u.codigo_unidad = r.codigo_unidad))) JOIN ficha f ON (((f.rut_ficha)::text = (r.rut_proveedor)::text))) JOIN temporada te ON ((r.codigo_temporada = te.codigo_temporada))) EXCEPT SELECT r.codigo_recepcion_insumo, i.descripcion_insumo, r.cantidad_producto, u.descripcion_unidad, f.descripcion_ficha, r.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((recepcion_insumo r JOIN aplicacion_producto a USING (codigo_recepcion_insumo)) JOIN insumo i ON ((i.codigo_insumo = r.codigo_insumo))) JOIN unidad u ON ((u.codigo_unidad = r.codigo_unidad))) JOIN ficha f ON (((f.rut_ficha)::text = (r.rut_proveedor)::text))) JOIN temporada te ON ((r.codigo_temporada = te.codigo_temporada))) WHERE (r.codigo_recepcion_insumo = a.codigo_recepcion_insumo)) UNION SELECT r.codigo_recepcion_insumo, i.descripcion_insumo, (r.cantidad_producto - sum((a.cantidad + a.merma))) AS cantidad_producto, u.descripcion_unidad, f.descripcion_ficha, r.codigo_temporada AS cod_tem, ((('Temporada '::text || (date_part('year'::text, te.fecha_inicio))::text) || '-'::text) || (date_part('year'::text, te.fecha_termino))::text) AS desc_tem FROM (((((aplicacion_producto a JOIN recepcion_insumo r USING (codigo_recepcion_insumo)) JOIN insumo i ON ((i.codigo_insumo = r.codigo_insumo))) JOIN unidad u ON ((u.codigo_unidad = r.codigo_unidad))) JOIN ficha f ON (((f.rut_ficha)::text = (r.rut_proveedor)::text))) JOIN temporada te ON ((r.codigo_temporada = te.codigo_temporada))) WHERE (r.codigo_recepcion_insumo = a.codigo_recepcion_insumo) GROUP BY r.codigo_recepcion_insumo, i.descripcion_insumo, r.cantidad_producto, u.descripcion_unidad, f.descripcion_ficha, r.codigo_temporada, te.fecha_inicio, te.fecha_termino HAVING ((r.cantidad_producto - sum((a.cantidad + a.merma))) <> (0)::double precision);


--
-- Name: pkaplicacion_producto; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY aplicacion_producto
    ADD CONSTRAINT pkaplicacion_producto PRIMARY KEY (codigo_aplicacion);


--
-- Name: pkcontrol; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY control
    ADD CONSTRAINT pkcontrol PRIMARY KEY (codigo_control);


--
-- Name: pkcuartel; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY cuartel
    ADD CONSTRAINT pkcuartel PRIMARY KEY (codigo_cuartel);


--
-- Name: pkdespacho; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY despacho
    ADD CONSTRAINT pkdespacho PRIMARY KEY (codigo_despacho);


--
-- Name: pkdetalle_fermentacion; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY detalle_fermentacion
    ADD CONSTRAINT pkdetalle_fermentacion PRIMARY KEY (codigo_fermentacion, codigo_relacion);


--
-- Name: pkdetalle_mezcla; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY detalle_mezcla
    ADD CONSTRAINT pkdetalle_mezcla PRIMARY KEY (codigo_mezcla, codigo_relacion);


--
-- Name: pkembotellado; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY embotellado
    ADD CONSTRAINT pkembotellado PRIMARY KEY (codigo_embotellado);


--
-- Name: pkembotellado_despacho; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY embotellado_despacho
    ADD CONSTRAINT pkembotellado_despacho PRIMARY KEY (codigo_despacho, codigo_embotellado);


--
-- Name: pkestanque; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY estanque
    ADD CONSTRAINT pkestanque PRIMARY KEY (codigo_estanque);


--
-- Name: pkfermentacion; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY fermentacion
    ADD CONSTRAINT pkfermentacion PRIMARY KEY (codigo_fermentacion);


--
-- Name: pkfermentacion_mezcla; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY fermentacion_mezcla
    ADD CONSTRAINT pkfermentacion_mezcla PRIMARY KEY (codigo_mezcla, codigo_fermentacion);


--
-- Name: pkficha; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY ficha
    ADD CONSTRAINT pkficha PRIMARY KEY (rut_ficha);


--
-- Name: pkinsumo; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY insumo
    ADD CONSTRAINT pkinsumo PRIMARY KEY (codigo_insumo);


--
-- Name: pkmaceracion; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY maceracion
    ADD CONSTRAINT pkmaceracion PRIMARY KEY (codigo_maceracion);


--
-- Name: pkmaceracion_fermentacion; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY maceracion_fermentacion
    ADD CONSTRAINT pkmaceracion_fermentacion PRIMARY KEY (codigo_fermentacion, codigo_maceracion);


--
-- Name: pkmezcla; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY mezcla
    ADD CONSTRAINT pkmezcla PRIMARY KEY (codigo_mezcla);


--
-- Name: pkmezcla_embotellado; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY mezcla_embotellado
    ADD CONSTRAINT pkmezcla_embotellado PRIMARY KEY (codigo_embotellado, codigo_mezcla);


--
-- Name: pkproducto; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY producto
    ADD CONSTRAINT pkproducto PRIMARY KEY (codigo_producto);


--
-- Name: pkrecepcion_insumo; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY recepcion_insumo
    ADD CONSTRAINT pkrecepcion_insumo PRIMARY KEY (codigo_recepcion_insumo);


--
-- Name: pkrecepcion_maceracion; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY recepcion_maceracion
    ADD CONSTRAINT pkrecepcion_maceracion PRIMARY KEY (codigo_maceracion, codigo_recepcion_uva);


--
-- Name: pkrecepcion_uva; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY recepcion_uva
    ADD CONSTRAINT pkrecepcion_uva PRIMARY KEY (codigo_recepcion_uva);


--
-- Name: pksector; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY sector
    ADD CONSTRAINT pksector PRIMARY KEY (codigo_sector);


--
-- Name: pktemporada; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY temporada
    ADD CONSTRAINT pktemporada PRIMARY KEY (codigo_temporada);


--
-- Name: pktipo_aplicacion; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY tipo_aplicacion
    ADD CONSTRAINT pktipo_aplicacion PRIMARY KEY (codigo_tipo_aplicacion);


--
-- Name: pktipo_control; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY tipo_control
    ADD CONSTRAINT pktipo_control PRIMARY KEY (codigo_tipo_control);


--
-- Name: pktipo_documento; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY tipo_documento
    ADD CONSTRAINT pktipo_documento PRIMARY KEY (codigo_tipo_documento);


--
-- Name: pktipo_ficha; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY tipo_ficha
    ADD CONSTRAINT pktipo_ficha PRIMARY KEY (codigo_tipo_ficha);


--
-- Name: pkunidad; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY unidad
    ADD CONSTRAINT pkunidad PRIMARY KEY (codigo_unidad);


--
-- Name: pkvariedad; Type: CONSTRAINT; Schema: traza; Owner: -; Tablespace: 
--

ALTER TABLE ONLY variedad
    ADD CONSTRAINT pkvariedad PRIMARY KEY (codigo_variedad);


--
-- Name: tgr_check_porcentaje_aplicacion_producto; Type: TRIGGER; Schema: traza; Owner: -
--

CREATE TRIGGER tgr_check_porcentaje_aplicacion_producto
    BEFORE INSERT ON aplicacion_producto
    FOR EACH ROW
    EXECUTE PROCEDURE check_porcentaje_aplicacion_producto();


--
-- Name: tgr_check_porcentaje_detalle_fermentacion; Type: TRIGGER; Schema: traza; Owner: -
--

CREATE TRIGGER tgr_check_porcentaje_detalle_fermentacion
    BEFORE INSERT ON detalle_fermentacion
    FOR EACH ROW
    EXECUTE PROCEDURE check_porcentaje_detalle_fermentacion();


--
-- Name: tgr_check_porcentaje_detalle_mezcla; Type: TRIGGER; Schema: traza; Owner: -
--

CREATE TRIGGER tgr_check_porcentaje_detalle_mezcla
    BEFORE INSERT ON detalle_mezcla
    FOR EACH ROW
    EXECUTE PROCEDURE check_porcentaje_detalle_mezcla();


--
-- Name: tgr_check_porcentaje_fermentacion_mezcla; Type: TRIGGER; Schema: traza; Owner: -
--

CREATE TRIGGER tgr_check_porcentaje_fermentacion_mezcla
    BEFORE INSERT ON fermentacion_mezcla
    FOR EACH ROW
    EXECUTE PROCEDURE check_porcentaje_fermentacion_mezcla();


--
-- Name: tgr_check_porcentaje_maceracion_fermentacion; Type: TRIGGER; Schema: traza; Owner: -
--

CREATE TRIGGER tgr_check_porcentaje_maceracion_fermentacion
    BEFORE INSERT ON maceracion_fermentacion
    FOR EACH ROW
    EXECUTE PROCEDURE check_porcentaje_maceracion_fermentacion();


--
-- Name: tgr_check_porcentaje_mezcla_embotellado; Type: TRIGGER; Schema: traza; Owner: -
--

CREATE TRIGGER tgr_check_porcentaje_mezcla_embotellado
    BEFORE INSERT ON mezcla_embotellado
    FOR EACH ROW
    EXECUTE PROCEDURE check_porcentaje_mezcla_embotellado();


--
-- Name: tgr_check_porcentaje_recepcion_uva; Type: TRIGGER; Schema: traza; Owner: -
--

CREATE TRIGGER tgr_check_porcentaje_recepcion_uva
    BEFORE INSERT ON recepcion_maceracion
    FOR EACH ROW
    EXECUTE PROCEDURE check_porcentaje_recepcion_uva();


--
-- Name: fk_aplicacion_fermentacion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY aplicacion_producto
    ADD CONSTRAINT fk_aplicacion_fermentacion FOREIGN KEY (codigo_fermentacion) REFERENCES fermentacion(codigo_fermentacion);


--
-- Name: fk_aplicacion_maceracion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY aplicacion_producto
    ADD CONSTRAINT fk_aplicacion_maceracion FOREIGN KEY (codigo_maceracion) REFERENCES maceracion(codigo_maceracion);


--
-- Name: fk_aplicacion_producto_despacho; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY aplicacion_producto
    ADD CONSTRAINT fk_aplicacion_producto_despacho FOREIGN KEY (codigo_despacho) REFERENCES despacho(codigo_despacho);


--
-- Name: fk_aplicacion_producto_embotellado; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY aplicacion_producto
    ADD CONSTRAINT fk_aplicacion_producto_embotellado FOREIGN KEY (codigo_embotellado) REFERENCES embotellado(codigo_embotellado);


--
-- Name: fk_aplicacion_producto_mezcla; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY aplicacion_producto
    ADD CONSTRAINT fk_aplicacion_producto_mezcla FOREIGN KEY (codigo_mezcla) REFERENCES mezcla(codigo_mezcla);


--
-- Name: fk_aplicacion_recepcion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY aplicacion_producto
    ADD CONSTRAINT fk_aplicacion_recepcion FOREIGN KEY (codigo_recepcion_insumo) REFERENCES recepcion_insumo(codigo_recepcion_insumo);


--
-- Name: fk_aplicacion_recepcion_uva; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY aplicacion_producto
    ADD CONSTRAINT fk_aplicacion_recepcion_uva FOREIGN KEY (codigo_recepcion_uva) REFERENCES recepcion_uva(codigo_recepcion_uva);


--
-- Name: fk_control_despacho; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY control
    ADD CONSTRAINT fk_control_despacho FOREIGN KEY (codigo_despacho) REFERENCES despacho(codigo_despacho);


--
-- Name: fk_control_embotellado; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY control
    ADD CONSTRAINT fk_control_embotellado FOREIGN KEY (codigo_embotellado) REFERENCES embotellado(codigo_embotellado);


--
-- Name: fk_control_fermentacion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY control
    ADD CONSTRAINT fk_control_fermentacion FOREIGN KEY (codigo_fermentacion) REFERENCES fermentacion(codigo_fermentacion);


--
-- Name: fk_control_maceracion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY control
    ADD CONSTRAINT fk_control_maceracion FOREIGN KEY (codigo_maceracion) REFERENCES maceracion(codigo_maceracion);


--
-- Name: fk_control_recepcion_uva; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY control
    ADD CONSTRAINT fk_control_recepcion_uva FOREIGN KEY (codigo_recepcion_uva) REFERENCES recepcion_uva(codigo_recepcion_uva);


--
-- Name: fk_control_responsable; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY control
    ADD CONSTRAINT fk_control_responsable FOREIGN KEY (rut_responsable) REFERENCES ficha(rut_ficha);


--
-- Name: fk_control_tipo; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY control
    ADD CONSTRAINT fk_control_tipo FOREIGN KEY (codigo_tipo_control) REFERENCES tipo_control(codigo_tipo_control);


--
-- Name: fk_cuartel_propietario; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY cuartel
    ADD CONSTRAINT fk_cuartel_propietario FOREIGN KEY (codigo_sector) REFERENCES sector(codigo_sector);


--
-- Name: fk_cuartel_variedad; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY cuartel
    ADD CONSTRAINT fk_cuartel_variedad FOREIGN KEY (codigo_variedad) REFERENCES variedad(codigo_variedad);


--
-- Name: fk_despacho_ficha; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY despacho
    ADD CONSTRAINT fk_despacho_ficha FOREIGN KEY (rut_cliente) REFERENCES ficha(rut_ficha);


--
-- Name: fk_despacho_temporada; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY despacho
    ADD CONSTRAINT fk_despacho_temporada FOREIGN KEY (codigo_temporada) REFERENCES temporada(codigo_temporada);


--
-- Name: fk_despacho_tipo_documento; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY despacho
    ADD CONSTRAINT fk_despacho_tipo_documento FOREIGN KEY (codigo_tipo_documento) REFERENCES tipo_documento(codigo_tipo_documento);


--
-- Name: fk_detalle_fermentacion_fermentacion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY detalle_fermentacion
    ADD CONSTRAINT fk_detalle_fermentacion_fermentacion FOREIGN KEY (codigo_fermentacion) REFERENCES fermentacion(codigo_fermentacion);


--
-- Name: fk_detalle_fermentacion_fermentacion_relacion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY detalle_fermentacion
    ADD CONSTRAINT fk_detalle_fermentacion_fermentacion_relacion FOREIGN KEY (codigo_relacion) REFERENCES fermentacion(codigo_fermentacion);


--
-- Name: fk_detalle_mezcla_mezcla; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY detalle_mezcla
    ADD CONSTRAINT fk_detalle_mezcla_mezcla FOREIGN KEY (codigo_mezcla) REFERENCES mezcla(codigo_mezcla);


--
-- Name: fk_detalle_mezcla_mezcla_relacion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY detalle_mezcla
    ADD CONSTRAINT fk_detalle_mezcla_mezcla_relacion FOREIGN KEY (codigo_relacion) REFERENCES mezcla(codigo_mezcla);


--
-- Name: fk_embotellado_despacho_despacho; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY embotellado_despacho
    ADD CONSTRAINT fk_embotellado_despacho_despacho FOREIGN KEY (codigo_despacho) REFERENCES despacho(codigo_despacho);


--
-- Name: fk_embotellado_despacho_embotellado; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY embotellado_despacho
    ADD CONSTRAINT fk_embotellado_despacho_embotellado FOREIGN KEY (codigo_embotellado) REFERENCES embotellado(codigo_embotellado);


--
-- Name: fk_embotellado_producto; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY embotellado
    ADD CONSTRAINT fk_embotellado_producto FOREIGN KEY (codigo_producto) REFERENCES producto(codigo_producto);


--
-- Name: fk_embotellado_temporada; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY embotellado
    ADD CONSTRAINT fk_embotellado_temporada FOREIGN KEY (codigo_temporada) REFERENCES temporada(codigo_temporada);


--
-- Name: fk_fermentacion_estanque; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY fermentacion
    ADD CONSTRAINT fk_fermentacion_estanque FOREIGN KEY (codigo_estanque) REFERENCES estanque(codigo_estanque);


--
-- Name: fk_fermentacion_mezcla_fermentacion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY fermentacion_mezcla
    ADD CONSTRAINT fk_fermentacion_mezcla_fermentacion FOREIGN KEY (codigo_fermentacion) REFERENCES fermentacion(codigo_fermentacion);


--
-- Name: fk_fermentacion_mezcla_mezcla; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY fermentacion_mezcla
    ADD CONSTRAINT fk_fermentacion_mezcla_mezcla FOREIGN KEY (codigo_mezcla) REFERENCES mezcla(codigo_mezcla);


--
-- Name: fk_fermentacion_temporada; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY fermentacion
    ADD CONSTRAINT fk_fermentacion_temporada FOREIGN KEY (codigo_temporada) REFERENCES temporada(codigo_temporada);


--
-- Name: fk_ficha_tipo; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY ficha
    ADD CONSTRAINT fk_ficha_tipo FOREIGN KEY (codigo_tipo_ficha) REFERENCES tipo_ficha(codigo_tipo_ficha);


--
-- Name: fk_maceracion_estanque; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY maceracion
    ADD CONSTRAINT fk_maceracion_estanque FOREIGN KEY (codigo_estanque) REFERENCES estanque(codigo_estanque);


--
-- Name: fk_maceracion_fermentacion_fermentacion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY maceracion_fermentacion
    ADD CONSTRAINT fk_maceracion_fermentacion_fermentacion FOREIGN KEY (codigo_fermentacion) REFERENCES fermentacion(codigo_fermentacion);


--
-- Name: fk_maceracion_fermentacion_maceracion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY maceracion_fermentacion
    ADD CONSTRAINT fk_maceracion_fermentacion_maceracion FOREIGN KEY (codigo_maceracion) REFERENCES maceracion(codigo_maceracion);


--
-- Name: fk_maceracion_temporada; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY maceracion
    ADD CONSTRAINT fk_maceracion_temporada FOREIGN KEY (codigo_temporada) REFERENCES temporada(codigo_temporada);


--
-- Name: fk_mezcla_despacho_despacho; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY mezcla_despacho
    ADD CONSTRAINT fk_mezcla_despacho_despacho FOREIGN KEY (codigo_despacho) REFERENCES despacho(codigo_despacho);


--
-- Name: fk_mezcla_despacho_mezcla; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY mezcla_despacho
    ADD CONSTRAINT fk_mezcla_despacho_mezcla FOREIGN KEY (codigo_mezcla) REFERENCES mezcla(codigo_mezcla);


--
-- Name: fk_mezcla_embotellado_embotellado; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY mezcla_embotellado
    ADD CONSTRAINT fk_mezcla_embotellado_embotellado FOREIGN KEY (codigo_embotellado) REFERENCES embotellado(codigo_embotellado);


--
-- Name: fk_mezcla_embotellado_mezcla; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY mezcla_embotellado
    ADD CONSTRAINT fk_mezcla_embotellado_mezcla FOREIGN KEY (codigo_mezcla) REFERENCES mezcla(codigo_mezcla);


--
-- Name: fk_mezcla_estanque; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY mezcla
    ADD CONSTRAINT fk_mezcla_estanque FOREIGN KEY (codigo_estanque) REFERENCES estanque(codigo_estanque);


--
-- Name: fk_mezcla_temporada; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY mezcla
    ADD CONSTRAINT fk_mezcla_temporada FOREIGN KEY (codigo_temporada) REFERENCES temporada(codigo_temporada);


--
-- Name: fk_recepcion_insumo; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY recepcion_insumo
    ADD CONSTRAINT fk_recepcion_insumo FOREIGN KEY (codigo_insumo) REFERENCES insumo(codigo_insumo);


--
-- Name: fk_recepcion_insumo_temporada; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY recepcion_insumo
    ADD CONSTRAINT fk_recepcion_insumo_temporada FOREIGN KEY (codigo_temporada) REFERENCES temporada(codigo_temporada);


--
-- Name: fk_recepcion_insumo_tipo_documento; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY recepcion_insumo
    ADD CONSTRAINT fk_recepcion_insumo_tipo_documento FOREIGN KEY (codigo_tipo_documento) REFERENCES tipo_documento(codigo_tipo_documento);


--
-- Name: fk_recepcion_insumo_unidad; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY recepcion_insumo
    ADD CONSTRAINT fk_recepcion_insumo_unidad FOREIGN KEY (codigo_unidad) REFERENCES unidad(codigo_unidad);


--
-- Name: fk_recepcion_maceracion_maceracion; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY recepcion_maceracion
    ADD CONSTRAINT fk_recepcion_maceracion_maceracion FOREIGN KEY (codigo_maceracion) REFERENCES maceracion(codigo_maceracion);


--
-- Name: fk_recepcion_maceracion_recepcion_uva; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY recepcion_maceracion
    ADD CONSTRAINT fk_recepcion_maceracion_recepcion_uva FOREIGN KEY (codigo_recepcion_uva) REFERENCES recepcion_uva(codigo_recepcion_uva);


--
-- Name: fk_recepcion_proveedor; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY recepcion_insumo
    ADD CONSTRAINT fk_recepcion_proveedor FOREIGN KEY (rut_proveedor) REFERENCES ficha(rut_ficha);


--
-- Name: fk_recepcion_responsable; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY aplicacion_producto
    ADD CONSTRAINT fk_recepcion_responsable FOREIGN KEY (rut_responsable) REFERENCES ficha(rut_ficha);


--
-- Name: fk_recepcion_uva_cuartel; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY recepcion_uva
    ADD CONSTRAINT fk_recepcion_uva_cuartel FOREIGN KEY (codigo_cuartel) REFERENCES cuartel(codigo_cuartel);


--
-- Name: fk_recepcion_uva_temporada; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY recepcion_uva
    ADD CONSTRAINT fk_recepcion_uva_temporada FOREIGN KEY (codigo_temporada) REFERENCES temporada(codigo_temporada);


--
-- Name: fk_sector_propietario; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY sector
    ADD CONSTRAINT fk_sector_propietario FOREIGN KEY (rut_propietario) REFERENCES ficha(rut_ficha);


--
-- Name: fk_tipo_control_unidad; Type: FK CONSTRAINT; Schema: traza; Owner: -
--

ALTER TABLE ONLY tipo_control
    ADD CONSTRAINT fk_tipo_control_unidad FOREIGN KEY (codigo_unidad) REFERENCES unidad(codigo_unidad);


--
-- Name: public; Type: ACL; Schema: -; Owner: -
--

REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;


--
-- Name: traza; Type: ACL; Schema: -; Owner: -
--

REVOKE ALL ON SCHEMA traza FROM PUBLIC;
REVOKE ALL ON SCHEMA traza FROM snmartin;
GRANT ALL ON SCHEMA traza TO snmartin;
GRANT ALL ON SCHEMA traza TO postgres;
GRANT ALL ON SCHEMA traza TO PUBLIC;


--
-- PostgreSQL database dump complete
--

